package com.yourenbang.transaction.api.model.dto.pay;

import com.yourenbang.lingyun.constants.enums.PlatNoEnums;
import com.yourenbang.lingyun.constants.enums.fund.AccountType;
import com.yourenbang.lingyun.constants.enums.pay.PayTypeEnum;
import com.yourenbang.lingyun.core.base.validator.EnumValue;
import com.yourenbang.lingyun.core.util.json.ToJSON;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;

@Data
public class WithDrawParamsDTO implements Serializable, ToJSON {

    /**
     * 提现金额,单位元
     */
    @Pattern(regexp = "^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$", message = "请输入合法金额")
    private String amt;

    /**
     * 提现用户ID
     */
    @NotBlank(message = "用户id不可空")
    private String userBaseId;

    /**
     * 提现渠道
     * <p>
     * WECHAT 微信支付
     * ALIPAY 支付宝
     * LINGHUISUAN 灵会算
     *
     * @see PayTypeEnum
     */
    @EnumValue(enumClass = PayTypeEnum.class, message = "提现支付类型未通过校验")
    private String withdrawPayType;

    /**
     * 提现账户类型,如100300 盟友资金账户,100310 商户资金账户
     *
     * @see AccountType
     */
//    @Pattern(regexp = "^21100300|21100310|21100420$", message = "请输入合法提现账户参数")
    private String toAccountType;


    /**
     * 第三方账户（卡号、支付宝账号）
     */
    @NotBlank(message = "第三方账户不可空")
    private String thirdAccount;

    /**
     * 系统编码 21 银小云
     *
     * @see PlatNoEnums
     */
    @EnumValue(enumClass = PlatNoEnums.class, message = "系统类型未通过校验")
    private Short platNo;

}
